1. Statement of the Technical Field
The present invention relates to Web Services and more particularly to the dynamic invocation of Web Services.
2. Description of the Related Art
Web services have become the rage of distributed computing and are viewed as the foundation for developing a truly universal model for supporting the rapid-development of component-based applications over the World Wide Web. Typically, Web services can be defined by an interface and implemented according to the interface, though the implementation details matter little so long as the implementation conforms to the Web services interface. Once a Web service has been implemented according to a corresponding interface, the implementation can be registered with a Web services registry, such as Universal Description, Discover and Integration (UDDI), as is well known in the art.
The Web Services Definition Language (WSDL) is an XML-based language used to define the Web services interface and to describe how to access defined Web services. In a WSDL document, both input and output messages associated with the Web service can be specified. Specifically, the input message can define parameters expected by a service operation and the name of the operation to be invoked. Conversely, the output message can define the result to be returned by the operation, if any. Each of the input and corresponding output messages of the Web service can be specified within an<operation> element in the WSDL document. Moreover, the physical representation of each of the expected parameters and result can be bound to the parameters and result through the <binding> element, as is well-known in the art.
As noted in Erik Christensen, Francisco Curbera, Greg Meredith and Sanjiva Weerawarana, Web Services Description Language (WSDL) 1.1, World Wide Web Consortium (W3C) Note (Mar. 15, 2001), each Web service implementation defined in a WSDL document can be defined using a <port> element. Using the <port> element, different ports can be specified through which a Web service operation can be accessed. For example, the port can specify a service address such as                http://localhost/ibm/wsdl/myService.aspx.In that case, where the service can be invoked through the Simple Object Access Protocol (SOAP), the port definition within the service element can include:        
<port name=‘myServicePort’ binding=‘wsdlns:myServiceSoapBinding’><soap:address location = ‘http://localhost/ibm/wsdl/myService.asp’/></port>By comparison, where the service can be invoked through HTTP, the port definition within the service element can include:
<port name=‘myServicePort’ binding=‘wsdlns:myServiceHTTPBinding’><http:address location = ‘http://localhost/ibm/wsdl/myService.asp’ /></port>
Each Web service can be accessed through multiple different ports. For instance, Web services can be exposed through one port for SOAP invocations, through a second port for HTTP invocations, and through yet a third port for SMTP invocations. To differentiate between each port, however, each specified port must have a unique name and a binding attribute. In any case, for SOAP invocable Web services, the port element can specify a <soap:address/> element containing the service address. By comparison, for HTTP invocable Web services, the port element can specify a <http:address/> element. Still, as it will be recognized by those skilled in the art, Web services need not be exposed exclusively through SOAP, HTTP or SMTP. Rather, other remote procedure calling protocols can suffice, as is well-known in the art.